#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>

int main(int argc, char** argv) {
  cv::Mat img = cv::imread(argv[1]); // argv[1] is 可执行文件后面的参数值，其为图像的文件路径

  if (img.empty()) {
    std::cout << "img is no exits" << std::endl;    
    return -1;
  }

  cv::Mat img_gray, img_hsv;

  cv::cvtColor(img, img_gray, cv::COLOR_BGR2GRAY); //  转换为灰度
  cv::cvtColor(img, img_hsv, cv::COLOR_BGR2HSV);   //  转换为hsv

  cv::namedWindow("img_origin", cv::WINDOW_FREERATIO);
  cv::imshow("img_origin", img);
  cv::namedWindow("img_gray", cv::WINDOW_FREERATIO);
  cv::imshow("img_gray", img_gray);
  cv::namedWindow("img_hsv", cv::WINDOW_FREERATIO);
  cv::imshow("img_hsv", img_hsv);
  cv::waitKey(0);
  cv::destroyAllWindows();

  return 0;
}